/**
 * 余额变更模型。
 */
module.exports = class Balance extends think.Model {
    get tableName() {
        return 'user_balance_history';
    }

    /**
     * 增加一条余额变更记录。
     */
    async createOne(userId, before, amount, type, notes) {
        return this.add({
            userId: userId,
            before: before,
            delta: amount,
            after: before + amount,
            type: type,
            notes: notes
        });
    }

    /**
     * 按页面获取用户余额记录。
     */
    async getByPage(userId, type, page, size) {
        if (userId) {
            this.where({userId: userId});
        }

        if (type) {
            this.where({type: type});
        }

        return this.order('id desc').page(page, size)
            .select();
    }
};
